package QianFeng07.IODemo.ByteAndDataArrayStream;

import java.io.*;

/**
 * 数据流：
 * 与机器无关的操作JAVA的基本数据类型
 *
 * DataInputStream:
 * 数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本Java数据类型。
 * 应用程序可以使用数据输出流写入稍后由数据输入流读取的数据。
 * DataInputStream对于多线程访问不一定是安全的。线程安全是可选的，它由此类方法的使用者负责。
 *
 * DataOutputStream:
 * 数据输出流允许应用程序以适当方式将基本Java数据类型写入输出流中。
 * 然后，应用程序可以使用数据输入流将数据读入。
 **/
public class DataStreamDemo {
    public static void main(String[] args) {
        //write();
        read();
    }

    //读取
    private static void read() {
        File file = new File("F:\\Test\\shine.dat");
        try {
            InputStream in = new FileInputStream(file);
            BufferedInputStream bis = new BufferedInputStream(in);
            DataInputStream dis = new DataInputStream(bis);
            int num = dis.readInt();
            byte b = dis.readByte();
            String s = dis.readUTF();
            System.out.println(num + "," + b + "," + s);
            dis.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    //写入
    private static void write() {
        File file = new File("F:\\Test\\shine.dat");
        try {
            OutputStream out = new FileOutputStream(file);
            BufferedOutputStream bos = new BufferedOutputStream(out);
            DataOutputStream dos = new DataOutputStream(bos);
            dos.writeInt(10);//写入4个字节   10 转换成 1010  四个字节
            dos.writeByte(1);//写入1个字节
            dos.writeUTF("中");
            dos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
